From 7b89941a2c2e1d07096fc7fffe48c2a45c446877 Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild.aw" Date: Fri, 21 Apr 2006 08:56:34 -0600 Subject: [PATCH] [IA64] Compile iosapic within xen Compile iosapic within xen. Part of code from Tristan. Signed-off-by Kevin Tian --- xen/arch/ia64/linux-xen/Makefile | 1 + xen/arch/ia64/linux-xen/iosapic.c | 6 ++++ xen/include/asm-ia64/config.h | 1 + xen/include/asm-ia64/linux-xen/asm/iosapic.h | 32 ++++++++++++++++++++ 4 files changed, 40 insertions(+) diff --git a/xen/arch/ia64/linux-xen/Makefile b/xen/arch/ia64/linux-xen/Makefile index ca5354b343..7adea3519f 100644 --- a/xen/arch/ia64/linux-xen/Makefile +++ b/xen/arch/ia64/linux-xen/Makefile @@ -13,3 +13,4 @@ obj-y += time.o obj-y += tlb.o obj-y += unaligned.o obj-y += unwind.o +obj-y += iosapic.o diff --git a/xen/arch/ia64/linux-xen/iosapic.c b/xen/arch/ia64/linux-xen/iosapic.c index 574084f343..9d964abba4 100644 --- a/xen/arch/ia64/linux-xen/iosapic.c +++ b/xen/arch/ia64/linux-xen/iosapic.c @@ -75,7 +75,9 @@ #include #include #include +#ifndef XEN #include +#endif #include #include #include @@ -524,7 +526,11 @@ static struct iosapic_rte_info *iosapic_alloc_rte (void) int preallocated = 0; if (!iosapic_kmalloc_ok && list_empty(&free_rte_list)) { +#ifdef XEN + rte = xmalloc_bytes(sizeof(struct iosapic_rte_info) * NR_PREALLOCATE_RTE_ENTRIES); +#else rte = alloc_bootmem(sizeof(struct iosapic_rte_info) * NR_PREALLOCATE_RTE_ENTRIES); +#endif if (!rte) return NULL; for (i = 0; i < NR_PREALLOCATE_RTE_ENTRIES; i++, rte++) diff --git a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h index 2d541d2a6a..ff9971e66e 100644 --- a/xen/include/asm-ia64/config.h +++ b/xen/include/asm-ia64/config.h @@ -35,6 +35,7 @@ #endif #define CONFIG_NR_CPUS NR_CPUS +#define CONFIG_IOSAPIC #define supervisor_mode_kernel (0) #define MAX_DMADOM_PFN (0x7FFFFFFFUL >> PAGE_SHIFT) /* 31 addressable bits */ diff --git a/xen/include/asm-ia64/linux-xen/asm/iosapic.h b/xen/include/asm-ia64/linux-xen/asm/iosapic.h index 20f98f1751..ab6c584a75 100644 --- a/xen/include/asm-ia64/linux-xen/asm/iosapic.h +++ b/xen/include/asm-ia64/linux-xen/asm/iosapic.h @@ -108,5 +108,37 @@ extern void __devinit map_iosapic_to_node (unsigned int, int); polarity,trigger) (gsi) #endif +#ifdef XEN +/* Move to common code later */ +/** + * list_move - delete from one list and add as another's head + * @list: the entry to move + * @head: the head that will precede our entry + */ +static inline void list_move(struct list_head *list, struct list_head *head) +{ + __list_del(list->prev, list->next); + list_add(list, head); +} + +#define move_irq(x) + +#define WARN_ON(condition) do { \ + if (unlikely((condition)!=0)) { \ + printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \ + dump_stack(); \ + } \ +} while (0) + +#ifdef nop +#undef nop +#endif + +/* nop for now */ +static inline void +set_irq_affinity_info(unsigned int irq, int hwid, int redir) {} + +#endif /* XEN */ + # endif /* !__ASSEMBLY__ */ #endif /* __ASM_IA64_IOSAPIC_H */ -- 2.30.2